In the theory of computation, a tag system is a deterministic model of computation published by Emil Leon Post in 1943 as a simple form of a Post canonical system. A tag system may also be viewed as an abstract machine, called a Post tag machine (not to be confused with Post–Turing machines)—briefly, a finite-state machine whose only tape is a FIFO queue of unbounded length, such that in each transition the machine reads the symbol at the head of the queue, deletes a constant number of symbols from the head, and appends to the tail a symbol-string that depends solely on the first symbol read in this transition.
Because all of the indicated operations are performed in a single transition, a tag machine strictly has only one state.
A halting word is a word that either begins with the halting symbol or whose length is less than m.
A transformation t (called the tag operation) is defined on the set of non-halting words, such that if x denotes the leftmost symbol of a word S, then t( S) is the result of deleting the leftmost m symbols of S and appending the word P(x) on the right. Thus, the system processes the m-symbol head into a tail of variable length, but the generated tail depends solely on the first symbol of the head.
A computation by a tag system is a finite sequence of words produced by iterating the transformation t, starting with an initially given word and halting when a halting word is produced. (By this definition, a computation is not considered to exist unless a halting word is produced in finitely-many iterations. Alternative definitions allow nonhalting computations, for example by using a special subset of the alphabet to identify words that encode output.)
The term m-tag system is often used to emphasise the deletion number. Definitions vary somewhat in the literature (cf. References), the one presented here being that of Rogozhin.
The use of a halting symbol in the above definition allows the output of a computation to be encoded in the final word alone, whereas otherwise the output would be encoded in the entire sequence of words produced by iterating the tag operation.
A common alternative definition uses no halting symbol and treats all words of length less than m as halting words. Another definition is the original one used by (described in the historical note below), in which the only halting word is the empty string.
2-tag systemAlphabet: {a,b,c,H} Production rules: a --> ccbaH b --> cca c --> ccComputation
Initial word: baa acca caccbaH ccbaHcc baHcccc Hcccccca (halt).
In the original Collatz sequence, the successor of n is either (for even n) or 3 n + 1 (for odd n). The value 3 n + 1 is clearly even for odd n, hence the next term after 3 n + 1 is surely . In the sequence computed by the tag system below we skip this intermediate step, hence the successor of n is for odd n.
In this tag system, a positive integer n is represented by the word aa...a with n a's.
2-tag systemAlphabet: {a,b,c} Production rules: a --> bc b --> a c --> aaaComputation
Initial word: aaa <--> n=3 abc cbc caaa aaaaa <--> 5 aaabc abcbc cbcbc cbcaaa caaaaaa aaaaaaaa <--> 8 aaaaaabc aaaabcbc aabcbcbc bcbcbcbc bcbcbca bcbcaa bcaaa aaaa <--> 4 aabc bcbc bca aa <--> 2 bc a <--> 1 (halt)
Conversely, a Turing machine can be shown to be a Universal Turing Machine by proving that it can emulate a Turing-complete class of m-tag systems. For example, proved the universality of the class of 2-tag systems with alphabet { a1, ..., an, } and corresponding productions { ananW1, ..., ananWn-1, anan, }, where the Wk are nonempty words; he then proved the universality of a very small (4-state, 6-symbol) Turing machine by showing that it can simulate this class of tag systems.
The 2-tag system is an efficient simulator of universal Turing machines, in time. That is, if is a deterministic single-tape Turing machine that runs in time , then there is a 2-tag system that simulates it in time.
Given an arbitrary positive integer n and a list of n+1 arbitrary words P1, P2,..., P n, Q on the alphabet {1,2,..., n}, does repeated application of the tag operation t: ijX → XP i eventually convert Q into a word of length less than 2? That is, does the sequence Q, t1( Q), t2( Q), t3( Q), ... terminate?
The above remark concerning the Turing-completeness of the set of m-tag systems, for any m > 1, applies also to these tag systems as originally defined by Post.
Cyclic Tag SystemProductions: (010, 000, 1111)Computation
Initial Word: 11001 Production Word ---------- -------------- 010 11001 000 1001010 1111 001010000 010 01010000 000 1010000 1111 010000000 010 10000000 . . . .
Cyclic tag systems were created by Matthew Cook and were used in Cook's demonstration that the Rule 110 cellular automaton is universal. A key part of the demonstration was that cyclic tag systems can emulate a Turing-complete class of tag systems.
''a1'' = 100...00 ''a2'' = 010...00 . . . ''an'' = 000...01
That is, ak is encoded as a binary string with a in the kth position from the left, and 's elsewhere. Successive lines of a tag system computation will then occur encoded as every ( m*n)th line of its emulation by the cyclic tag system.
2-tag systemEvery sixth line (marked by '') produced by the cyclic tag system is the encoding of a corresponding line of the tag system computation, until the emulated halt is reached.Production rules: (a --> bb, b --> abH, H --> H) Alphabet encoding: a = 100, b = 010, H = 001 Production encodings: (bb = 010 010, abH = 100 010 001, H = 001)Cyclic tag system
Productions: (010 010, 100 010 001, 001, -, -, -)Tag system computation
Initial word: ba abH Hbb (halt)Cyclic tag system computation
Initial word: 010 100 (=ba)
Production Word ---------- ------------------------------- * 010 010 010 100 (=ba) 100 010 001 10 100 001 0 100 100 010 001 - 100 100 010 001 - 00 100 010 001 - 0 100 010 001 * 010 010 100 010 001 (=abH) 100 010 001 00 010 001 010 010 001 0 010 001 010 010 - 010 001 010 010 - 10 001 010 010 - 0 001 010 010 * 010 010 emulated halt --> 001 010 010 (=Hbb) 100 010 001 01 010 010 001 1 010 010 - 010 010 001 ... ...
|
|